package it.unicam.ids.pvm.data;

import it.unicam.ids.pvm.distributore.Annuncio;

/**
 * La classe rappresenta un'interfaccia per la gestione degli
 * annunci nella sorgente dati.
 * Uso del design pattern DAO.
 * @author Luca Iachini, Valerio Iachini, Alessandro Cardenà
 *
 */
public interface AnnuncioDAO {
	
	/**
	 * Il metodo consente di inserire un nuovo annuncio
	 * @param annuncio nuovo annuncio da inserire.
	 * @throws DAOException messaggio di errore relativo
	 *                      	all'inserimento dell'annuncio.
	 */
	public void insert(Annuncio annuncio) throws DAOException;
	
	/**
	 * Il metodo consente di aggiornare un dato annuncio
	 * @param annuncio annuncio con contenuti aggiornati.
	 * @throws DAOException messaggio d'errore relativo
	 *                      	all'aggiornamento dell'annuncio.
	 */
	public void update(Annuncio annuncio) throws DAOException;
	
	/**
	 * Il metodo consente di eliminare un dato annuncio
	 * @param annuncio annuncio da eliminare.
	 * @throws DAOException messaggio d'errore relativo 
	 *                      	alla cancellazione dell'annuncio.
	 */

	public void delete(Annuncio annuncio) throws DAOException;
	
	/**
	 * Il metodo consente di recuperare tutti 
	 * gli annunci presenti nella sorgente dati.
	 * @return annunci array di annunci.
	 * @throws DAOException messagio d'errore relativo 
	 *                      	al recupero degli annunci.
	 */

	public Annuncio[] findAllAnnunci() throws DAOException;
	
	/**
	 * Il metodo consente di recuperare un particolare annuncio
	 * dalla sorgente dati.
	 * @param idAnnuncio codice relativo all'annuncio da cercare.
	 * @return annuncio annuncio cercato.
	 * @throws DAOException messaggio d'errore relativo 
	 *                      	al recupero dell'annuncio.
	 */

	public Annuncio findById(int idAnnuncio) throws DAOException;
	
}
